/*
!=====================================================================
!
!               S p e c f e m 3 D  V e r s i o n  3 . 0
!               ---------------------------------------
!
!     Main historical authors: Dimitri Komatitsch and Jeroen Tromp
!                        Princeton University, USA
!                and CNRS / University of Marseille, France
!                 (there are currently many more authors!)
! (c) Princeton University and CNRS / University of Marseille, July 2012
!
! This program is free software; you can redistribute it and/or modify
! it under the terms of the GNU General Public License as published by
! the Free Software Foundation; either version 2 of the License, or
! (at your option) any later version.
!
! This program is distributed in the hope that it will be useful,
! but WITHOUT ANY WARRANTY; without even the implied warranty of
! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
! GNU General Public License for more details.
!
! You should have received a copy of the GNU General Public License along
! with this program; if not, write to the Free Software Foundation, Inc.,
! 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
!
!=====================================================================
*/

// Gauss-Lobatto-Legendre
#define NGLL 5
#define NGLLX 5
#define NGLL2 25
#define NGLL3 125

typedef float realw;
typedef const realw* __restrict__ realw_const_p;
typedef realw* __restrict__ realw_p;


void print_CUDA_error_if_any(cudaError_t err, int num);
void synchronize_cuda();
typedef struct Smooth_data_ {
realw * x_me;
realw * y_me;
realw * z_me;
realw * data_smooth;
realw * normalisation;
realw * wgll_cube;
realw sigma_h2_inv;
realw sigma_v2_inv;
realw h_criterion;
realw v_criterion;
int nspec_me;
int nker;
} Smooth_data;

